﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BE;

namespace BLL.Common
{
    public enum AccionElemento
    {
        Ninguna = 0,
        Crear,
        Editar,
        Eliminar
    }

    public class AccionesListBLL<T> 
    {
        Dictionary<T, AccionElemento> _accionesElemento;
        public Dictionary<T, AccionElemento> AccionesElemento
        {
            get
            {
                if (_accionesElemento == null)
                    _accionesElemento = new Dictionary<T, AccionElemento>();
                return _accionesElemento;
            }
        }

        public void InicializarAcciones()
        {
            _accionesElemento = new Dictionary<T, AccionElemento>();
        }

        public void AgregarElemento(T pElemento)
        {
            if (!AccionesElemento.ContainsKey(pElemento))
                AccionesElemento.Add(pElemento, AccionElemento.Crear);
            else
                if (AccionesElemento[pElemento] == AccionElemento.Eliminar)
                    AccionesElemento[pElemento] = AccionElemento.Ninguna;
        }

        public void QuitarElemento(T pElemento)
        {
            if (!AccionesElemento.ContainsKey(pElemento))
                AccionesElemento.Add(pElemento, AccionElemento.Eliminar);
            else
                if (AccionesElemento[pElemento] == AccionElemento.Crear)
                    AccionesElemento[pElemento] = AccionElemento.Ninguna;
                else
                    if (AccionesElemento[pElemento] == AccionElemento.Editar || AccionesElemento[pElemento] == AccionElemento.Ninguna)
                        AccionesElemento[pElemento] = AccionElemento.Eliminar;
        }

        public void EditarElemento(T pElemento)
        {
            if (!AccionesElemento.ContainsKey(pElemento))
                AccionesElemento.Add(pElemento, AccionElemento.Editar);
            else
                if (AccionesElemento[pElemento] == AccionElemento.Eliminar || AccionesElemento[pElemento] == AccionElemento.Ninguna)
                    AccionesElemento[pElemento] = AccionElemento.Editar;
        }

    }


}
